{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# CKP8277 - APRENDIZAGEM AUTOMATICA 2017.2\n",
    "\n",
    "Aluno: Felipe Zschornack Rodrigues Saraiva - 396903"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Redes Neurais\n",
    "## Classificação utilizando MLP"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "import pandas as pd\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "%matplotlib inline\n",
    "import random\n",
    "from sklearn.preprocessing import StandardScaler\n",
    "from sklearn.neural_network import MLPClassifier, MLPRegressor\n",
    "import math\n",
    "from io import StringIO  # Python3\n",
    "import sys"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>0</th>\n",
       "      <th>1</th>\n",
       "      <th>2</th>\n",
       "      <th>3</th>\n",
       "      <th>4</th>\n",
       "      <th>5</th>\n",
       "      <th>6</th>\n",
       "      <th>7</th>\n",
       "      <th>8</th>\n",
       "      <th>9</th>\n",
       "      <th>...</th>\n",
       "      <th>400</th>\n",
       "      <th>401</th>\n",
       "      <th>402</th>\n",
       "      <th>403</th>\n",
       "      <th>404</th>\n",
       "      <th>405</th>\n",
       "      <th>406</th>\n",
       "      <th>407</th>\n",
       "      <th>408</th>\n",
       "      <th>409</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>...</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>...</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>...</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>...</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>...</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>5 rows × 410 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "   0    1    2    3    4    5    6    7    8    9   ...   400  401  402  403  \\\n",
       "0    0    0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0 ...     1    0    0    0   \n",
       "1    0    0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0 ...     1    0    0    0   \n",
       "2    0    0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0 ...     1    0    0    0   \n",
       "3    0    0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0 ...     1    0    0    0   \n",
       "4    0    0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0 ...     1    0    0    0   \n",
       "\n",
       "   404  405  406  407  408  409  \n",
       "0    0    0    0    0    0    0  \n",
       "1    0    0    0    0    0    0  \n",
       "2    0    0    0    0    0    0  \n",
       "3    0    0    0    0    0    0  \n",
       "4    0    0    0    0    0    0  \n",
       "\n",
       "[5 rows x 410 columns]"
      ]
     },
     "execution_count": 2,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "features = pd.read_csv('ex3data1_X.txt', sep=' ', header=None)\n",
    "labels = pd.read_csv('ex3data1_T.txt', sep=' ', header=None)\n",
    "data = pd.concat([features, labels], axis=1, ignore_index=True)\n",
    "# data = data.sample(frac=1).reset_index(drop=True) # shuffle\n",
    "data.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>0</th>\n",
       "      <th>1</th>\n",
       "      <th>2</th>\n",
       "      <th>3</th>\n",
       "      <th>4</th>\n",
       "      <th>5</th>\n",
       "      <th>6</th>\n",
       "      <th>7</th>\n",
       "      <th>8</th>\n",
       "      <th>9</th>\n",
       "      <th>...</th>\n",
       "      <th>400</th>\n",
       "      <th>401</th>\n",
       "      <th>402</th>\n",
       "      <th>403</th>\n",
       "      <th>404</th>\n",
       "      <th>405</th>\n",
       "      <th>406</th>\n",
       "      <th>407</th>\n",
       "      <th>408</th>\n",
       "      <th>409</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>...</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>...</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>...</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>...</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>...</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>5 rows × 410 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "   0    1    2    3    4    5    6    7    8    9   ...   400  401  402  403  \\\n",
       "0    0    0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0 ...     1    0    0    0   \n",
       "1    0    0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0 ...     1    0    0    0   \n",
       "2    0    0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0 ...     1    0    0    0   \n",
       "3    0    0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0 ...     1    0    0    0   \n",
       "4    0    0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0 ...     1    0    0    0   \n",
       "\n",
       "   404  405  406  407  408  409  \n",
       "0    0    0    0    0    0    0  \n",
       "1    0    0    0    0    0    0  \n",
       "2    0    0    0    0    0    0  \n",
       "3    0    0    0    0    0    0  \n",
       "4    0    0    0    0    0    0  \n",
       "\n",
       "[5 rows x 410 columns]"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "train_list = []\n",
    "test_list = []\n",
    "\n",
    "for i in range(10):\n",
    "    train_list.append(data.iloc[i*500 : i*500 + 450])\n",
    "    test_list.append(data.iloc[i*500 + 450 : i*500 + 500])\n",
    "\n",
    "train = pd.concat(train_list)\n",
    "test = pd.concat(test_list)\n",
    "\n",
    "train.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Iteration 1, loss = 3.99651326\n",
      "Validation score: 0.000000\n",
      "Iteration 2, loss = 2.41861040\n",
      "Validation score: 0.364444\n",
      "Iteration 3, loss = 1.47182554\n",
      "Validation score: 0.620000\n",
      "Iteration 4, loss = 1.00615274\n",
      "Validation score: 0.737778\n",
      "Iteration 5, loss = 0.78050620\n",
      "Validation score: 0.804444\n",
      "Iteration 6, loss = 0.65194548\n",
      "Validation score: 0.808889\n",
      "Iteration 7, loss = 0.57556251\n",
      "Validation score: 0.813333\n",
      "Iteration 8, loss = 0.52377520\n",
      "Validation score: 0.828889\n",
      "Iteration 9, loss = 0.48555921\n",
      "Validation score: 0.846667\n",
      "Iteration 10, loss = 0.44855021\n",
      "Validation score: 0.846667\n",
      "Iteration 11, loss = 0.42015840\n",
      "Validation score: 0.862222\n",
      "Iteration 12, loss = 0.39497288\n",
      "Validation score: 0.857778\n",
      "Iteration 13, loss = 0.37151568\n",
      "Validation score: 0.864444\n",
      "Iteration 14, loss = 0.35473148\n",
      "Validation score: 0.871111\n",
      "Iteration 15, loss = 0.33491034\n",
      "Validation score: 0.864444\n",
      "Iteration 16, loss = 0.32234912\n",
      "Validation score: 0.871111\n",
      "Iteration 17, loss = 0.30593094\n",
      "Validation score: 0.875556\n",
      "Iteration 18, loss = 0.29421353\n",
      "Validation score: 0.868889\n",
      "Iteration 19, loss = 0.28141734\n",
      "Validation score: 0.877778\n",
      "Iteration 20, loss = 0.26935987\n",
      "Validation score: 0.868889\n",
      "Iteration 21, loss = 0.25764703\n",
      "Validation score: 0.875556\n",
      "Iteration 22, loss = 0.24795440\n",
      "Validation score: 0.882222\n",
      "Iteration 23, loss = 0.24224988\n",
      "Validation score: 0.882222\n",
      "Iteration 24, loss = 0.23020585\n",
      "Validation score: 0.886667\n",
      "Iteration 25, loss = 0.22253420\n",
      "Validation score: 0.888889\n",
      "Iteration 26, loss = 0.21121527\n",
      "Validation score: 0.884444\n",
      "Iteration 27, loss = 0.20187291\n",
      "Validation score: 0.884444\n",
      "Iteration 28, loss = 0.19682451\n",
      "Validation score: 0.882222\n",
      "Validation score did not improve more than tol=0.000100 for two consecutive epochs. Stopping.\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "MLPClassifier(activation='logistic', alpha=0, batch_size='auto', beta_1=0.9,\n",
       "       beta_2=0.999, early_stopping=True, epsilon=1e-08,\n",
       "       hidden_layer_sizes=100, learning_rate='constant',\n",
       "       learning_rate_init=0.3, max_iter=500, momentum=0.9,\n",
       "       nesterovs_momentum=True, power_t=0.5, random_state=None,\n",
       "       shuffle=False, solver='sgd', tol=0.0001, validation_fraction=0.1,\n",
       "       verbose=500, warm_start=False)"
      ]
     },
     "execution_count": 38,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "mlp = MLPClassifier(hidden_layer_sizes=(100), \n",
    "                    activation='logistic', \n",
    "                    learning_rate_init=0.3, \n",
    "                    solver='sgd', \n",
    "                    max_iter=500, \n",
    "                    alpha=0, \n",
    "                    shuffle=False, \n",
    "                    verbose=500, \n",
    "                    validation_fraction=0.1, \n",
    "                    early_stopping=True)\n",
    "\n",
    "mlp.fit(train.iloc[:, :400], train.iloc[:, 400:])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.axes._subplots.AxesSubplot at 0x10dc19080>"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\ngg==\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x103a2ba20>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# precisei salvar a saída acima em dois '.txt' (epoch_loss e validation_score)\n",
    "epoch_loss = pd.read_csv('epoch_loss.txt', header=None)\n",
    "epoch_loss.plot()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 40,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.axes._subplots.AxesSubplot at 0x10eb8e4e0>"
      ]
     },
     "execution_count": 40,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x1101969e8>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "validation_error = pd.read_csv('validation_score.txt', header=None)\n",
    "validation_error = validation_error.apply(lambda x: 1 - x)\n",
    "validation_error.plot()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 39,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.90000000000000002"
      ]
     },
     "execution_count": 39,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "mlp.score(test.iloc[:,:400], test.iloc[:,400:])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "O erro no conjunto de treinamento continua diminuindo após 200+ épocas, porém o erro no conjunto de validação diminui até a época 25 e depois começa a aumentar. Isso indica que após a época 25 o modelo começa a sofrer overfitting nos dados de treinamento e, portanto, o treinamento deve ser parado na época 25."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 92,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>0</th>\n",
       "      <th>1</th>\n",
       "      <th>2</th>\n",
       "      <th>3</th>\n",
       "      <th>4</th>\n",
       "      <th>5</th>\n",
       "      <th>6</th>\n",
       "      <th>7</th>\n",
       "      <th>8</th>\n",
       "      <th>9</th>\n",
       "      <th>10</th>\n",
       "      <th>11</th>\n",
       "      <th>12</th>\n",
       "      <th>13</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0.00632</td>\n",
       "      <td>18.0</td>\n",
       "      <td>2.31</td>\n",
       "      <td>0</td>\n",
       "      <td>0.538</td>\n",
       "      <td>6.575</td>\n",
       "      <td>65.2</td>\n",
       "      <td>4.0900</td>\n",
       "      <td>1</td>\n",
       "      <td>296</td>\n",
       "      <td>15.3</td>\n",
       "      <td>396.90</td>\n",
       "      <td>4.98</td>\n",
       "      <td>24.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>0.02731</td>\n",
       "      <td>0.0</td>\n",
       "      <td>7.07</td>\n",
       "      <td>0</td>\n",
       "      <td>0.469</td>\n",
       "      <td>6.421</td>\n",
       "      <td>78.9</td>\n",
       "      <td>4.9671</td>\n",
       "      <td>2</td>\n",
       "      <td>242</td>\n",
       "      <td>17.8</td>\n",
       "      <td>396.90</td>\n",
       "      <td>9.14</td>\n",
       "      <td>21.6</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>0.02729</td>\n",
       "      <td>0.0</td>\n",
       "      <td>7.07</td>\n",
       "      <td>0</td>\n",
       "      <td>0.469</td>\n",
       "      <td>7.185</td>\n",
       "      <td>61.1</td>\n",
       "      <td>4.9671</td>\n",
       "      <td>2</td>\n",
       "      <td>242</td>\n",
       "      <td>17.8</td>\n",
       "      <td>392.83</td>\n",
       "      <td>4.03</td>\n",
       "      <td>34.7</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>0.03237</td>\n",
       "      <td>0.0</td>\n",
       "      <td>2.18</td>\n",
       "      <td>0</td>\n",
       "      <td>0.458</td>\n",
       "      <td>6.998</td>\n",
       "      <td>45.8</td>\n",
       "      <td>6.0622</td>\n",
       "      <td>3</td>\n",
       "      <td>222</td>\n",
       "      <td>18.7</td>\n",
       "      <td>394.63</td>\n",
       "      <td>2.94</td>\n",
       "      <td>33.4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>0.06905</td>\n",
       "      <td>0.0</td>\n",
       "      <td>2.18</td>\n",
       "      <td>0</td>\n",
       "      <td>0.458</td>\n",
       "      <td>7.147</td>\n",
       "      <td>54.2</td>\n",
       "      <td>6.0622</td>\n",
       "      <td>3</td>\n",
       "      <td>222</td>\n",
       "      <td>18.7</td>\n",
       "      <td>396.90</td>\n",
       "      <td>5.33</td>\n",
       "      <td>36.2</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "        0     1     2   3      4      5     6       7   8    9     10      11  \\\n",
       "0  0.00632  18.0  2.31   0  0.538  6.575  65.2  4.0900   1  296  15.3  396.90   \n",
       "1  0.02731   0.0  7.07   0  0.469  6.421  78.9  4.9671   2  242  17.8  396.90   \n",
       "2  0.02729   0.0  7.07   0  0.469  7.185  61.1  4.9671   2  242  17.8  392.83   \n",
       "3  0.03237   0.0  2.18   0  0.458  6.998  45.8  6.0622   3  222  18.7  394.63   \n",
       "4  0.06905   0.0  2.18   0  0.458  7.147  54.2  6.0622   3  222  18.7  396.90   \n",
       "\n",
       "     12    13  \n",
       "0  4.98  24.0  \n",
       "1  9.14  21.6  \n",
       "2  4.03  34.7  \n",
       "3  2.94  33.4  \n",
       "4  5.33  36.2  "
      ]
     },
     "execution_count": 92,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data2 = pd.read_csv('ex3data2.txt', header=None, sep=' ')\n",
    "data2.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>0</th>\n",
       "      <th>1</th>\n",
       "      <th>2</th>\n",
       "      <th>3</th>\n",
       "      <th>4</th>\n",
       "      <th>5</th>\n",
       "      <th>6</th>\n",
       "      <th>7</th>\n",
       "      <th>8</th>\n",
       "      <th>9</th>\n",
       "      <th>10</th>\n",
       "      <th>11</th>\n",
       "      <th>12</th>\n",
       "      <th>13</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>-0.419782</td>\n",
       "      <td>0.284830</td>\n",
       "      <td>-1.287909</td>\n",
       "      <td>-0.272599</td>\n",
       "      <td>-0.144217</td>\n",
       "      <td>0.413672</td>\n",
       "      <td>-0.120013</td>\n",
       "      <td>0.140214</td>\n",
       "      <td>-0.982843</td>\n",
       "      <td>-0.666608</td>\n",
       "      <td>-1.459000</td>\n",
       "      <td>0.441052</td>\n",
       "      <td>-1.075562</td>\n",
       "      <td>24.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>-0.417339</td>\n",
       "      <td>-0.487722</td>\n",
       "      <td>-0.593381</td>\n",
       "      <td>-0.272599</td>\n",
       "      <td>-0.740262</td>\n",
       "      <td>0.194274</td>\n",
       "      <td>0.367166</td>\n",
       "      <td>0.557160</td>\n",
       "      <td>-0.867883</td>\n",
       "      <td>-0.987329</td>\n",
       "      <td>-0.303094</td>\n",
       "      <td>0.441052</td>\n",
       "      <td>-0.492439</td>\n",
       "      <td>21.6</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>-0.417342</td>\n",
       "      <td>-0.487722</td>\n",
       "      <td>-0.593381</td>\n",
       "      <td>-0.272599</td>\n",
       "      <td>-0.740262</td>\n",
       "      <td>1.282714</td>\n",
       "      <td>-0.265812</td>\n",
       "      <td>0.557160</td>\n",
       "      <td>-0.867883</td>\n",
       "      <td>-0.987329</td>\n",
       "      <td>-0.303094</td>\n",
       "      <td>0.396427</td>\n",
       "      <td>-1.208727</td>\n",
       "      <td>34.7</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>-0.416750</td>\n",
       "      <td>-0.487722</td>\n",
       "      <td>-1.306878</td>\n",
       "      <td>-0.272599</td>\n",
       "      <td>-0.835284</td>\n",
       "      <td>1.016303</td>\n",
       "      <td>-0.809889</td>\n",
       "      <td>1.077737</td>\n",
       "      <td>-0.752922</td>\n",
       "      <td>-1.106115</td>\n",
       "      <td>0.113032</td>\n",
       "      <td>0.416163</td>\n",
       "      <td>-1.361517</td>\n",
       "      <td>33.4</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>-0.412482</td>\n",
       "      <td>-0.487722</td>\n",
       "      <td>-1.306878</td>\n",
       "      <td>-0.272599</td>\n",
       "      <td>-0.835284</td>\n",
       "      <td>1.228577</td>\n",
       "      <td>-0.511180</td>\n",
       "      <td>1.077737</td>\n",
       "      <td>-0.752922</td>\n",
       "      <td>-1.106115</td>\n",
       "      <td>0.113032</td>\n",
       "      <td>0.441052</td>\n",
       "      <td>-1.026501</td>\n",
       "      <td>36.2</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "         0         1         2         3         4         5         6   \\\n",
       "0 -0.419782  0.284830 -1.287909 -0.272599 -0.144217  0.413672 -0.120013   \n",
       "1 -0.417339 -0.487722 -0.593381 -0.272599 -0.740262  0.194274  0.367166   \n",
       "2 -0.417342 -0.487722 -0.593381 -0.272599 -0.740262  1.282714 -0.265812   \n",
       "3 -0.416750 -0.487722 -1.306878 -0.272599 -0.835284  1.016303 -0.809889   \n",
       "4 -0.412482 -0.487722 -1.306878 -0.272599 -0.835284  1.228577 -0.511180   \n",
       "\n",
       "         7         8         9         10        11        12    13  \n",
       "0  0.140214 -0.982843 -0.666608 -1.459000  0.441052 -1.075562  24.0  \n",
       "1  0.557160 -0.867883 -0.987329 -0.303094  0.441052 -0.492439  21.6  \n",
       "2  0.557160 -0.867883 -0.987329 -0.303094  0.396427 -1.208727  34.7  \n",
       "3  1.077737 -0.752922 -1.106115  0.113032  0.416163 -1.361517  33.4  \n",
       "4  1.077737 -0.752922 -1.106115  0.113032  0.441052 -1.026501  36.2  "
      ]
     },
     "execution_count": 34,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# standardize data\n",
    "df_x = data2.iloc[:,:13]\n",
    "df_y = data2.iloc[:,13]\n",
    "\n",
    "scaler = StandardScaler().fit(df_x)\n",
    "df_x = pd.DataFrame(scaler.transform(df_x))\n",
    "\n",
    "data2 = pd.concat([df_x, df_y], axis=1)\n",
    "data2.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 58,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>0</th>\n",
       "      <th>1</th>\n",
       "      <th>2</th>\n",
       "      <th>3</th>\n",
       "      <th>4</th>\n",
       "      <th>5</th>\n",
       "      <th>6</th>\n",
       "      <th>7</th>\n",
       "      <th>8</th>\n",
       "      <th>9</th>\n",
       "      <th>10</th>\n",
       "      <th>11</th>\n",
       "      <th>12</th>\n",
       "      <th>13</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>-0.418126</td>\n",
       "      <td>3.160441</td>\n",
       "      <td>-1.516987</td>\n",
       "      <td>-0.272599</td>\n",
       "      <td>-1.249924</td>\n",
       "      <td>0.140137</td>\n",
       "      <td>-1.169050</td>\n",
       "      <td>2.563455</td>\n",
       "      <td>-0.867883</td>\n",
       "      <td>-0.565640</td>\n",
       "      <td>-0.534275</td>\n",
       "      <td>0.441052</td>\n",
       "      <td>-0.964825</td>\n",
       "      <td>24.7</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>-0.207116</td>\n",
       "      <td>-0.487722</td>\n",
       "      <td>1.231945</td>\n",
       "      <td>3.668398</td>\n",
       "      <td>0.434551</td>\n",
       "      <td>2.161728</td>\n",
       "      <td>1.053485</td>\n",
       "      <td>-0.833960</td>\n",
       "      <td>-0.523001</td>\n",
       "      <td>-0.031105</td>\n",
       "      <td>-1.736418</td>\n",
       "      <td>0.361122</td>\n",
       "      <td>-1.504494</td>\n",
       "      <td>50.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>-0.403217</td>\n",
       "      <td>-0.487722</td>\n",
       "      <td>-0.375976</td>\n",
       "      <td>-0.272599</td>\n",
       "      <td>-0.299707</td>\n",
       "      <td>0.630220</td>\n",
       "      <td>0.402727</td>\n",
       "      <td>-0.483566</td>\n",
       "      <td>-0.523001</td>\n",
       "      <td>-0.143951</td>\n",
       "      <td>1.130230</td>\n",
       "      <td>0.417588</td>\n",
       "      <td>-0.453191</td>\n",
       "      <td>27.5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>-0.402961</td>\n",
       "      <td>-0.487722</td>\n",
       "      <td>2.422565</td>\n",
       "      <td>-0.272599</td>\n",
       "      <td>0.469104</td>\n",
       "      <td>-1.183370</td>\n",
       "      <td>0.857902</td>\n",
       "      <td>-0.938447</td>\n",
       "      <td>-0.637962</td>\n",
       "      <td>1.798194</td>\n",
       "      <td>0.760340</td>\n",
       "      <td>0.421206</td>\n",
       "      <td>0.757911</td>\n",
       "      <td>15.2</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>-0.413480</td>\n",
       "      <td>-0.487722</td>\n",
       "      <td>-1.266023</td>\n",
       "      <td>-0.272599</td>\n",
       "      <td>-0.576134</td>\n",
       "      <td>-0.187534</td>\n",
       "      <td>0.008005</td>\n",
       "      <td>-0.244978</td>\n",
       "      <td>-0.752922</td>\n",
       "      <td>-1.278354</td>\n",
       "      <td>-0.303094</td>\n",
       "      <td>0.333711</td>\n",
       "      <td>0.069658</td>\n",
       "      <td>29.6</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "         0         1         2         3         4         5         6   \\\n",
       "0 -0.418126  3.160441 -1.516987 -0.272599 -1.249924  0.140137 -1.169050   \n",
       "1 -0.207116 -0.487722  1.231945  3.668398  0.434551  2.161728  1.053485   \n",
       "2 -0.403217 -0.487722 -0.375976 -0.272599 -0.299707  0.630220  0.402727   \n",
       "3 -0.402961 -0.487722  2.422565 -0.272599  0.469104 -1.183370  0.857902   \n",
       "4 -0.413480 -0.487722 -1.266023 -0.272599 -0.576134 -0.187534  0.008005   \n",
       "\n",
       "         7         8         9         10        11        12    13  \n",
       "0  2.563455 -0.867883 -0.565640 -0.534275  0.441052 -0.964825  24.7  \n",
       "1 -0.833960 -0.523001 -0.031105 -1.736418  0.361122 -1.504494  50.0  \n",
       "2 -0.483566 -0.523001 -0.143951  1.130230  0.417588 -0.453191  27.5  \n",
       "3 -0.938447 -0.637962  1.798194  0.760340  0.421206  0.757911  15.2  \n",
       "4 -0.244978 -0.752922 -1.278354 -0.303094  0.333711  0.069658  29.6  "
      ]
     },
     "execution_count": 58,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data2 = data2.sample(frac=1).reset_index(drop=True) # shuffle\n",
    "\n",
    "train = data2.iloc[:406]\n",
    "test = data2.iloc[406:]\n",
    "\n",
    "train.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 79,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Iteration 1, loss = 288.60702731\n",
      "Validation score: -5.977450\n",
      "Iteration 2, loss = 284.17242146\n",
      "Validation score: -5.826353\n",
      "Iteration 3, loss = 277.52021630\n",
      "Validation score: -5.632096\n",
      "Iteration 4, loss = 269.17677001\n",
      "Validation score: -5.406930\n",
      "Iteration 5, loss = 259.66760490\n",
      "Validation score: -5.160593\n",
      "Iteration 6, loss = 249.41504233\n",
      "Validation score: -4.901037\n",
      "Iteration 7, loss = 238.62225036\n",
      "Validation score: -4.635088\n",
      "Iteration 8, loss = 227.59255316\n",
      "Validation score: -4.367818\n",
      "Iteration 9, loss = 216.61602528\n",
      "Validation score: -4.102868\n",
      "Iteration 10, loss = 205.61408129\n",
      "Validation score: -3.843661\n",
      "Iteration 11, loss = 195.07262739\n",
      "Validation score: -3.591597\n",
      "Iteration 12, loss = 184.79635917\n",
      "Validation score: -3.348654\n",
      "Iteration 13, loss = 174.91767358\n",
      "Validation score: -3.115973\n",
      "Iteration 14, loss = 165.46012280\n",
      "Validation score: -2.894289\n",
      "Iteration 15, loss = 156.43704720\n",
      "Validation score: -2.684035\n",
      "Iteration 16, loss = 147.87815263\n",
      "Validation score: -2.485279\n",
      "Iteration 17, loss = 139.75450907\n",
      "Validation score: -2.297959\n",
      "Iteration 18, loss = 132.16645012\n",
      "Validation score: -2.121601\n",
      "Iteration 19, loss = 125.05770715\n",
      "Validation score: -1.955888\n",
      "Iteration 20, loss = 118.33548474\n",
      "Validation score: -1.800616\n",
      "Iteration 21, loss = 111.88041194\n",
      "Validation score: -1.655585\n",
      "Iteration 22, loss = 106.13813318\n",
      "Validation score: -1.519439\n",
      "Iteration 23, loss = 100.56164745\n",
      "Validation score: -1.392419\n",
      "Iteration 24, loss = 95.36452421\n",
      "Validation score: -1.273856\n",
      "Iteration 25, loss = 90.58877600\n",
      "Validation score: -1.163055\n",
      "Iteration 26, loss = 86.16278216\n",
      "Validation score: -1.059553\n",
      "Iteration 27, loss = 81.85759810\n",
      "Validation score: -0.963346\n",
      "Iteration 28, loss = 78.01018463\n",
      "Validation score: -0.873447\n",
      "Iteration 29, loss = 74.46993663\n",
      "Validation score: -0.789493\n",
      "Iteration 30, loss = 70.96326337\n",
      "Validation score: -0.711650\n",
      "Iteration 31, loss = 67.79470750\n",
      "Validation score: -0.639096\n",
      "Iteration 32, loss = 64.86693766\n",
      "Validation score: -0.571416\n",
      "Iteration 33, loss = 62.20705357\n",
      "Validation score: -0.508188\n",
      "Iteration 34, loss = 59.56208460\n",
      "Validation score: -0.449546\n",
      "Iteration 35, loss = 57.13340415\n",
      "Validation score: -0.394930\n",
      "Iteration 36, loss = 55.00272059\n",
      "Validation score: -0.343733\n",
      "Iteration 37, loss = 52.99771389\n",
      "Validation score: -0.295918\n",
      "Iteration 38, loss = 51.01319198\n",
      "Validation score: -0.251568\n",
      "Iteration 39, loss = 49.24459702\n",
      "Validation score: -0.210166\n",
      "Iteration 40, loss = 47.51786099\n",
      "Validation score: -0.171688\n",
      "Iteration 41, loss = 46.02072934\n",
      "Validation score: -0.135593\n",
      "Iteration 42, loss = 44.55337767\n",
      "Validation score: -0.101978\n",
      "Iteration 43, loss = 43.19803005\n",
      "Validation score: -0.070589\n",
      "Iteration 44, loss = 41.96995113\n",
      "Validation score: -0.041210\n",
      "Iteration 45, loss = 40.79290737\n",
      "Validation score: -0.013792\n",
      "Iteration 46, loss = 39.70878627\n",
      "Validation score: 0.011816\n",
      "Iteration 47, loss = 38.64837198\n",
      "Validation score: 0.035659\n",
      "Iteration 48, loss = 37.70274853\n",
      "Validation score: 0.058014\n",
      "Iteration 49, loss = 36.81939670\n",
      "Validation score: 0.078978\n",
      "Iteration 50, loss = 35.93959594\n",
      "Validation score: 0.098535\n",
      "Iteration 51, loss = 35.19513340\n",
      "Validation score: 0.117021\n",
      "Iteration 52, loss = 34.46832935\n",
      "Validation score: 0.134401\n",
      "Iteration 53, loss = 33.78880287\n",
      "Validation score: 0.150727\n",
      "Iteration 54, loss = 33.16265615\n",
      "Validation score: 0.166082\n",
      "Iteration 55, loss = 32.57077777\n",
      "Validation score: 0.180499\n",
      "Iteration 56, loss = 31.96050554\n",
      "Validation score: 0.193921\n",
      "Iteration 57, loss = 31.42756794\n",
      "Validation score: 0.206597\n",
      "Iteration 58, loss = 30.98650339\n",
      "Validation score: 0.218707\n",
      "Iteration 59, loss = 30.50001160\n",
      "Validation score: 0.230038\n",
      "Iteration 60, loss = 30.04683998\n",
      "Validation score: 0.240682\n",
      "Iteration 61, loss = 29.62465498\n",
      "Validation score: 0.250737\n",
      "Iteration 62, loss = 29.26211992\n",
      "Validation score: 0.260330\n",
      "Iteration 63, loss = 28.88953503\n",
      "Validation score: 0.269373\n",
      "Iteration 64, loss = 28.53367895\n",
      "Validation score: 0.277911\n",
      "Iteration 65, loss = 28.20081218\n",
      "Validation score: 0.285999\n",
      "Iteration 66, loss = 27.89367631\n",
      "Validation score: 0.293701\n",
      "Iteration 67, loss = 27.61055953\n",
      "Validation score: 0.301051\n",
      "Iteration 68, loss = 27.31398558\n",
      "Validation score: 0.307986\n",
      "Iteration 69, loss = 27.05451308\n",
      "Validation score: 0.314619\n",
      "Iteration 70, loss = 26.82048524\n",
      "Validation score: 0.320997\n",
      "Iteration 71, loss = 26.59043712\n",
      "Validation score: 0.327072\n",
      "Iteration 72, loss = 26.33964763\n",
      "Validation score: 0.332788\n",
      "Iteration 73, loss = 26.12268494\n",
      "Validation score: 0.338263\n",
      "Iteration 74, loss = 25.91527718\n",
      "Validation score: 0.343507\n",
      "Iteration 75, loss = 25.72144944\n",
      "Validation score: 0.348547\n",
      "Iteration 76, loss = 25.52854638\n",
      "Validation score: 0.353381\n",
      "Iteration 77, loss = 25.35924727\n",
      "Validation score: 0.358049\n",
      "Iteration 78, loss = 25.18054486\n",
      "Validation score: 0.362502\n",
      "Iteration 79, loss = 24.99959614\n",
      "Validation score: 0.366743\n",
      "Iteration 80, loss = 24.84941113\n",
      "Validation score: 0.370883\n",
      "Iteration 81, loss = 24.69217582\n",
      "Validation score: 0.374859\n",
      "Iteration 82, loss = 24.55088899\n",
      "Validation score: 0.378708\n",
      "Iteration 83, loss = 24.40496879\n",
      "Validation score: 0.382404\n",
      "Iteration 84, loss = 24.26023874\n",
      "Validation score: 0.385949\n",
      "Iteration 85, loss = 24.13807165\n",
      "Validation score: 0.389408\n",
      "Iteration 86, loss = 23.99390184\n",
      "Validation score: 0.392704\n",
      "Iteration 87, loss = 23.87262915\n",
      "Validation score: 0.395916\n",
      "Iteration 88, loss = 23.75338624\n",
      "Validation score: 0.399039\n",
      "Iteration 89, loss = 23.63715745\n",
      "Validation score: 0.402066\n",
      "Iteration 90, loss = 23.51610439\n",
      "Validation score: 0.404988\n",
      "Iteration 91, loss = 23.40922223\n",
      "Validation score: 0.407840\n",
      "Iteration 92, loss = 23.30465770\n",
      "Validation score: 0.410625\n",
      "Iteration 93, loss = 23.19327986\n",
      "Validation score: 0.413304\n",
      "Iteration 94, loss = 23.09153090\n",
      "Validation score: 0.415918\n",
      "Iteration 95, loss = 22.99027848\n",
      "Validation score: 0.418458\n",
      "Iteration 96, loss = 22.89191989\n",
      "Validation score: 0.420933\n",
      "Iteration 97, loss = 22.80031028\n",
      "Validation score: 0.423360\n",
      "Iteration 98, loss = 22.69956928\n",
      "Validation score: 0.425705\n",
      "Iteration 99, loss = 22.60613332\n",
      "Validation score: 0.427995\n",
      "Iteration 100, loss = 22.52113451\n",
      "Validation score: 0.430275\n",
      "Iteration 101, loss = 22.43130653\n",
      "Validation score: 0.432500\n",
      "Iteration 102, loss = 22.34539804\n",
      "Validation score: 0.434677\n",
      "Iteration 103, loss = 22.26295200\n",
      "Validation score: 0.436815\n",
      "Iteration 104, loss = 22.17606529\n",
      "Validation score: 0.438888\n",
      "Iteration 105, loss = 22.09839064\n",
      "Validation score: 0.440935\n",
      "Iteration 106, loss = 22.01093446\n",
      "Validation score: 0.442916\n",
      "Iteration 107, loss = 21.93276385\n",
      "Validation score: 0.444861\n",
      "Iteration 108, loss = 21.85694177\n",
      "Validation score: 0.446789\n",
      "Iteration 109, loss = 21.77950761\n",
      "Validation score: 0.448672\n",
      "Iteration 110, loss = 21.70440528\n",
      "Validation score: 0.450530\n",
      "Iteration 111, loss = 21.62642413\n",
      "Validation score: 0.452342\n",
      "Iteration 112, loss = 21.55650482\n",
      "Validation score: 0.454151\n",
      "Iteration 113, loss = 21.49518797\n",
      "Validation score: 0.455955\n",
      "Iteration 114, loss = 21.41229416\n",
      "Validation score: 0.457675\n",
      "Iteration 115, loss = 21.34390108\n",
      "Validation score: 0.459372\n",
      "Iteration 116, loss = 21.27483637\n",
      "Validation score: 0.461043\n",
      "Iteration 117, loss = 21.20607727\n",
      "Validation score: 0.462686\n",
      "Iteration 118, loss = 21.14182258\n",
      "Validation score: 0.464318\n",
      "Iteration 119, loss = 21.07440211\n",
      "Validation score: 0.465916\n",
      "Iteration 120, loss = 21.00568088\n",
      "Validation score: 0.467477\n",
      "Iteration 121, loss = 20.94127884\n",
      "Validation score: 0.469029\n",
      "Iteration 122, loss = 20.88256143\n",
      "Validation score: 0.470574\n",
      "Iteration 123, loss = 20.81994182\n",
      "Validation score: 0.472092\n",
      "Iteration 124, loss = 20.75226637\n",
      "Validation score: 0.473564\n",
      "Iteration 125, loss = 20.69466711\n",
      "Validation score: 0.475037\n",
      "Iteration 126, loss = 20.63450124\n",
      "Validation score: 0.476475\n",
      "Iteration 127, loss = 20.57212946\n",
      "Validation score: 0.477890\n",
      "Iteration 128, loss = 20.51531601\n",
      "Validation score: 0.479299\n",
      "Iteration 129, loss = 20.45125720\n",
      "Validation score: 0.480662\n",
      "Iteration 130, loss = 20.39787187\n",
      "Validation score: 0.482045\n",
      "Iteration 131, loss = 20.33978028\n",
      "Validation score: 0.483397\n",
      "Iteration 132, loss = 20.28246820\n",
      "Validation score: 0.484736\n",
      "Iteration 133, loss = 20.22716596\n",
      "Validation score: 0.486055\n",
      "Iteration 134, loss = 20.17005865\n",
      "Validation score: 0.487362\n",
      "Iteration 135, loss = 20.11867867\n",
      "Validation score: 0.488663\n",
      "Iteration 136, loss = 20.06099956\n",
      "Validation score: 0.489926\n",
      "Iteration 137, loss = 20.00701887\n",
      "Validation score: 0.491165\n",
      "Iteration 138, loss = 19.95352861\n",
      "Validation score: 0.492397\n",
      "Iteration 139, loss = 19.90420607\n",
      "Validation score: 0.493630\n",
      "Iteration 140, loss = 19.84947625\n",
      "Validation score: 0.494822\n",
      "Iteration 141, loss = 19.79548050\n",
      "Validation score: 0.496003\n",
      "Iteration 142, loss = 19.74967413\n",
      "Validation score: 0.497193\n",
      "Iteration 143, loss = 19.69713492\n",
      "Validation score: 0.498349\n",
      "Iteration 144, loss = 19.64524959\n",
      "Validation score: 0.499491\n",
      "Iteration 145, loss = 19.59388548\n",
      "Validation score: 0.500618\n",
      "Iteration 146, loss = 19.54744868\n",
      "Validation score: 0.501747\n",
      "Iteration 147, loss = 19.50014700\n",
      "Validation score: 0.502861\n",
      "Iteration 148, loss = 19.44813582\n",
      "Validation score: 0.503947\n",
      "Iteration 149, loss = 19.40121937\n",
      "Validation score: 0.505027\n",
      "Iteration 150, loss = 19.35779189\n",
      "Validation score: 0.506108\n",
      "Iteration 151, loss = 19.30654073\n",
      "Validation score: 0.507155\n",
      "Iteration 152, loss = 19.26001222\n",
      "Validation score: 0.508189\n",
      "Iteration 153, loss = 19.21473692\n",
      "Validation score: 0.509219\n",
      "Iteration 154, loss = 19.16721652\n",
      "Validation score: 0.510231\n",
      "Iteration 155, loss = 19.12255012\n",
      "Validation score: 0.511240\n",
      "Iteration 156, loss = 19.07929206\n",
      "Validation score: 0.512248\n",
      "Iteration 157, loss = 19.03368879\n",
      "Validation score: 0.513247\n",
      "Iteration 158, loss = 18.99097812\n",
      "Validation score: 0.514249\n",
      "Iteration 159, loss = 18.94366025\n",
      "Validation score: 0.515221\n",
      "Iteration 160, loss = 18.90155862\n",
      "Validation score: 0.516199\n",
      "Iteration 161, loss = 18.86143805\n",
      "Validation score: 0.517188\n",
      "Iteration 162, loss = 18.81564139\n",
      "Validation score: 0.518146\n",
      "Iteration 163, loss = 18.77210088\n",
      "Validation score: 0.519087\n",
      "Iteration 164, loss = 18.72957103\n",
      "Validation score: 0.520021\n",
      "Iteration 165, loss = 18.68861367\n",
      "Validation score: 0.520948\n",
      "Iteration 166, loss = 18.64675725\n",
      "Validation score: 0.521866\n",
      "Iteration 167, loss = 18.60542025\n",
      "Validation score: 0.522776\n",
      "Iteration 168, loss = 18.56495532\n",
      "Validation score: 0.523678\n",
      "Iteration 169, loss = 18.52649262\n",
      "Validation score: 0.524583\n",
      "Iteration 170, loss = 18.48296465\n",
      "Validation score: 0.525449\n",
      "Iteration 171, loss = 18.44549702\n",
      "Validation score: 0.526338\n",
      "Iteration 172, loss = 18.40306627\n",
      "Validation score: 0.527207\n",
      "Iteration 173, loss = 18.36570656\n",
      "Validation score: 0.528081\n",
      "Iteration 174, loss = 18.32498851\n",
      "Validation score: 0.528935\n",
      "Iteration 175, loss = 18.28780820\n",
      "Validation score: 0.529793\n",
      "Iteration 176, loss = 18.24928467\n",
      "Validation score: 0.530637\n",
      "Iteration 177, loss = 18.21089143\n",
      "Validation score: 0.531472\n",
      "Iteration 178, loss = 18.17142257\n",
      "Validation score: 0.532295\n",
      "Iteration 179, loss = 18.13448294\n",
      "Validation score: 0.533125\n",
      "Iteration 180, loss = 18.09674790\n",
      "Validation score: 0.533941\n",
      "Iteration 181, loss = 18.05956724\n",
      "Validation score: 0.534758\n",
      "Iteration 182, loss = 18.02164845\n",
      "Validation score: 0.535557\n",
      "Iteration 183, loss = 17.98607620\n",
      "Validation score: 0.536358\n",
      "Iteration 184, loss = 17.94850778\n",
      "Validation score: 0.537145\n",
      "Iteration 185, loss = 17.91532970\n",
      "Validation score: 0.537938\n",
      "Iteration 186, loss = 17.87951321\n",
      "Validation score: 0.538719\n",
      "Iteration 187, loss = 17.84228428\n",
      "Validation score: 0.539477\n",
      "Iteration 188, loss = 17.80834881\n",
      "Validation score: 0.540235\n",
      "Iteration 189, loss = 17.77314544\n",
      "Validation score: 0.540986\n",
      "Iteration 190, loss = 17.73782942\n",
      "Validation score: 0.541715\n",
      "Iteration 191, loss = 17.70272183\n",
      "Validation score: 0.542442\n",
      "Iteration 192, loss = 17.66803349\n",
      "Validation score: 0.543173\n",
      "Iteration 193, loss = 17.63405398\n",
      "Validation score: 0.543896\n",
      "Iteration 194, loss = 17.60106565\n",
      "Validation score: 0.544610\n",
      "Iteration 195, loss = 17.56692984\n",
      "Validation score: 0.545311\n",
      "Iteration 196, loss = 17.53538466\n",
      "Validation score: 0.546029\n",
      "Iteration 197, loss = 17.50132389\n",
      "Validation score: 0.546754\n",
      "Iteration 198, loss = 17.47006526\n",
      "Validation score: 0.547474\n",
      "Iteration 199, loss = 17.43473770\n",
      "Validation score: 0.548175\n",
      "Iteration 200, loss = 17.40206949\n",
      "Validation score: 0.548864\n",
      "Iteration 201, loss = 17.37117422\n",
      "Validation score: 0.549563\n",
      "Iteration 202, loss = 17.34085379\n",
      "Validation score: 0.550261\n",
      "Iteration 203, loss = 17.30631944\n",
      "Validation score: 0.550938\n",
      "Iteration 204, loss = 17.27468711\n",
      "Validation score: 0.551610\n",
      "Iteration 205, loss = 17.24325732\n",
      "Validation score: 0.552278\n",
      "Iteration 206, loss = 17.21408522\n",
      "Validation score: 0.552949\n",
      "Iteration 207, loss = 17.18257723\n",
      "Validation score: 0.553612\n",
      "Iteration 208, loss = 17.15092634\n",
      "Validation score: 0.554259\n",
      "Iteration 209, loss = 17.11942527\n",
      "Validation score: 0.554899\n",
      "Iteration 210, loss = 17.09086885\n",
      "Validation score: 0.555544\n",
      "Iteration 211, loss = 17.06279856\n",
      "Validation score: 0.556189\n",
      "Iteration 212, loss = 17.03055848\n",
      "Validation score: 0.556810\n",
      "Iteration 213, loss = 17.00290914\n",
      "Validation score: 0.557437\n",
      "Iteration 214, loss = 16.97153000\n",
      "Validation score: 0.558048\n",
      "Iteration 215, loss = 16.94119220\n",
      "Validation score: 0.558641\n",
      "Iteration 216, loss = 16.91238992\n",
      "Validation score: 0.559260\n",
      "Iteration 217, loss = 16.88480251\n",
      "Validation score: 0.559877\n",
      "Iteration 218, loss = 16.85704611\n",
      "Validation score: 0.560499\n",
      "Iteration 219, loss = 16.82665280\n",
      "Validation score: 0.561091\n",
      "Iteration 220, loss = 16.79755985\n",
      "Validation score: 0.561695\n",
      "Iteration 221, loss = 16.76926610\n",
      "Validation score: 0.562291\n",
      "Iteration 222, loss = 16.74224149\n",
      "Validation score: 0.562896\n",
      "Iteration 223, loss = 16.71308550\n",
      "Validation score: 0.563487\n",
      "Iteration 224, loss = 16.68566886\n",
      "Validation score: 0.564077\n",
      "Iteration 225, loss = 16.65941466\n",
      "Validation score: 0.564669\n",
      "Iteration 226, loss = 16.63132113\n",
      "Validation score: 0.565249\n",
      "Iteration 227, loss = 16.60364116\n",
      "Validation score: 0.565820\n",
      "Iteration 228, loss = 16.57838116\n",
      "Validation score: 0.566384\n",
      "Iteration 229, loss = 16.54910412\n",
      "Validation score: 0.566936\n",
      "Iteration 230, loss = 16.52301827\n",
      "Validation score: 0.567484\n",
      "Iteration 231, loss = 16.49566526\n",
      "Validation score: 0.568030\n",
      "Iteration 232, loss = 16.47087371\n",
      "Validation score: 0.568575\n",
      "Iteration 233, loss = 16.44470738\n",
      "Validation score: 0.569112\n",
      "Iteration 234, loss = 16.41853278\n",
      "Validation score: 0.569645\n",
      "Iteration 235, loss = 16.39325912\n",
      "Validation score: 0.570181\n",
      "Iteration 236, loss = 16.36697808\n",
      "Validation score: 0.570708\n",
      "Iteration 237, loss = 16.34124214\n",
      "Validation score: 0.571237\n",
      "Iteration 238, loss = 16.31656054\n",
      "Validation score: 0.571767\n",
      "Iteration 239, loss = 16.29160298\n",
      "Validation score: 0.572286\n",
      "Iteration 240, loss = 16.26640399\n",
      "Validation score: 0.572797\n",
      "Iteration 241, loss = 16.24088612\n",
      "Validation score: 0.573299\n",
      "Iteration 242, loss = 16.21718773\n",
      "Validation score: 0.573805\n",
      "Iteration 243, loss = 16.19159583\n",
      "Validation score: 0.574301\n",
      "Iteration 244, loss = 16.16780553\n",
      "Validation score: 0.574796\n",
      "Iteration 245, loss = 16.14343669\n",
      "Validation score: 0.575285\n",
      "Iteration 246, loss = 16.12033954\n",
      "Validation score: 0.575781\n",
      "Iteration 247, loss = 16.09533139\n",
      "Validation score: 0.576266\n",
      "Iteration 248, loss = 16.07095123\n",
      "Validation score: 0.576749\n",
      "Iteration 249, loss = 16.05069742\n",
      "Validation score: 0.577246\n",
      "Iteration 250, loss = 16.02360839\n",
      "Validation score: 0.577715\n",
      "Iteration 251, loss = 16.00147385\n",
      "Validation score: 0.578194\n",
      "Iteration 252, loss = 15.97673572\n",
      "Validation score: 0.578665\n",
      "Iteration 253, loss = 15.95458636\n",
      "Validation score: 0.579139\n",
      "Iteration 254, loss = 15.93312058\n",
      "Validation score: 0.579610\n",
      "Iteration 255, loss = 15.90918830\n",
      "Validation score: 0.580073\n",
      "Iteration 256, loss = 15.88534239\n",
      "Validation score: 0.580531\n",
      "Iteration 257, loss = 15.86402987\n",
      "Validation score: 0.580995\n",
      "Iteration 258, loss = 15.84157565\n",
      "Validation score: 0.581452\n",
      "Iteration 259, loss = 15.81838418\n",
      "Validation score: 0.581905\n",
      "Iteration 260, loss = 15.79591032\n",
      "Validation score: 0.582352\n",
      "Iteration 261, loss = 15.77477651\n",
      "Validation score: 0.582797\n",
      "Iteration 262, loss = 15.75314668\n",
      "Validation score: 0.583241\n",
      "Iteration 263, loss = 15.73156201\n",
      "Validation score: 0.583686\n",
      "Iteration 264, loss = 15.71073570\n",
      "Validation score: 0.584127\n",
      "Iteration 265, loss = 15.68765201\n",
      "Validation score: 0.584555\n",
      "Iteration 266, loss = 15.66696900\n",
      "Validation score: 0.584985\n",
      "Iteration 267, loss = 15.64510213\n",
      "Validation score: 0.585410\n",
      "Iteration 268, loss = 15.62485245\n",
      "Validation score: 0.585833\n",
      "Iteration 269, loss = 15.60450569\n",
      "Validation score: 0.586250\n",
      "Iteration 270, loss = 15.58497542\n",
      "Validation score: 0.586666\n",
      "Iteration 271, loss = 15.56270412\n",
      "Validation score: 0.587065\n",
      "Iteration 272, loss = 15.54096192\n",
      "Validation score: 0.587457\n",
      "Iteration 273, loss = 15.52462434\n",
      "Validation score: 0.587862\n",
      "Iteration 274, loss = 15.50192035\n",
      "Validation score: 0.588250\n",
      "Iteration 275, loss = 15.48090564\n",
      "Validation score: 0.588626\n",
      "Iteration 276, loss = 15.46225072\n",
      "Validation score: 0.589015\n",
      "Iteration 277, loss = 15.44190669\n",
      "Validation score: 0.589400\n",
      "Iteration 278, loss = 15.42098606\n",
      "Validation score: 0.589780\n",
      "Iteration 279, loss = 15.40119078\n",
      "Validation score: 0.590169\n",
      "Iteration 280, loss = 15.38246056\n",
      "Validation score: 0.590560\n",
      "Iteration 281, loss = 15.36269855\n",
      "Validation score: 0.590958\n",
      "Iteration 282, loss = 15.34437074\n",
      "Validation score: 0.591357\n",
      "Iteration 283, loss = 15.32405552\n",
      "Validation score: 0.591739\n",
      "Iteration 284, loss = 15.30578290\n",
      "Validation score: 0.592121\n",
      "Iteration 285, loss = 15.28641797\n",
      "Validation score: 0.592517\n",
      "Iteration 286, loss = 15.26640773\n",
      "Validation score: 0.592898\n",
      "Iteration 287, loss = 15.24850179\n",
      "Validation score: 0.593280\n",
      "Iteration 288, loss = 15.22918040\n",
      "Validation score: 0.593658\n",
      "Iteration 289, loss = 15.21020874\n",
      "Validation score: 0.594030\n",
      "Iteration 290, loss = 15.19124686\n",
      "Validation score: 0.594395\n",
      "Iteration 291, loss = 15.17381477\n",
      "Validation score: 0.594763\n",
      "Iteration 292, loss = 15.15475944\n",
      "Validation score: 0.595121\n",
      "Iteration 293, loss = 15.13783604\n",
      "Validation score: 0.595486\n",
      "Iteration 294, loss = 15.11837667\n",
      "Validation score: 0.595836\n",
      "Iteration 295, loss = 15.10194592\n",
      "Validation score: 0.596189\n",
      "Iteration 296, loss = 15.08303925\n",
      "Validation score: 0.596534\n",
      "Iteration 297, loss = 15.06535242\n",
      "Validation score: 0.596881\n",
      "Iteration 298, loss = 15.04856796\n",
      "Validation score: 0.597226\n",
      "Iteration 299, loss = 15.03010930\n",
      "Validation score: 0.597559\n",
      "Iteration 300, loss = 15.01334188\n",
      "Validation score: 0.597902\n",
      "Iteration 301, loss = 14.99550001\n",
      "Validation score: 0.598239\n",
      "Iteration 302, loss = 14.98107333\n",
      "Validation score: 0.598582\n",
      "Iteration 303, loss = 14.96168847\n",
      "Validation score: 0.598908\n",
      "Iteration 304, loss = 14.94444932\n",
      "Validation score: 0.599227\n",
      "Iteration 305, loss = 14.92682897\n",
      "Validation score: 0.599542\n",
      "Iteration 306, loss = 14.91104741\n",
      "Validation score: 0.599862\n",
      "Iteration 307, loss = 14.89466978\n",
      "Validation score: 0.600184\n",
      "Iteration 308, loss = 14.87708376\n",
      "Validation score: 0.600497\n",
      "Iteration 309, loss = 14.86096617\n",
      "Validation score: 0.600813\n",
      "Iteration 310, loss = 14.84521808\n",
      "Validation score: 0.601127\n",
      "Iteration 311, loss = 14.82732341\n",
      "Validation score: 0.601434\n",
      "Iteration 312, loss = 14.81267376\n",
      "Validation score: 0.601745\n",
      "Iteration 313, loss = 14.79635742\n",
      "Validation score: 0.602056\n",
      "Iteration 314, loss = 14.77953677\n",
      "Validation score: 0.602352\n",
      "Iteration 315, loss = 14.76324056\n",
      "Validation score: 0.602650\n",
      "Iteration 316, loss = 14.74721797\n",
      "Validation score: 0.602960\n",
      "Iteration 317, loss = 14.73151019\n",
      "Validation score: 0.603265\n",
      "Iteration 318, loss = 14.71576567\n",
      "Validation score: 0.603573\n",
      "Iteration 319, loss = 14.69993172\n",
      "Validation score: 0.603880\n",
      "Iteration 320, loss = 14.68434745\n",
      "Validation score: 0.604183\n",
      "Iteration 321, loss = 14.66983306\n",
      "Validation score: 0.604495\n",
      "Iteration 322, loss = 14.65279274\n",
      "Validation score: 0.604797\n",
      "Iteration 323, loss = 14.63744206\n",
      "Validation score: 0.605095\n",
      "Iteration 324, loss = 14.62215604\n",
      "Validation score: 0.605390\n",
      "Iteration 325, loss = 14.60799563\n",
      "Validation score: 0.605697\n",
      "Iteration 326, loss = 14.59237040\n",
      "Validation score: 0.605997\n",
      "Iteration 327, loss = 14.57692706\n",
      "Validation score: 0.606290\n",
      "Iteration 328, loss = 14.56139043\n",
      "Validation score: 0.606580\n",
      "Iteration 329, loss = 14.54615210\n",
      "Validation score: 0.606869\n",
      "Iteration 330, loss = 14.53244332\n",
      "Validation score: 0.607161\n",
      "Iteration 331, loss = 14.51719742\n",
      "Validation score: 0.607450\n",
      "Iteration 332, loss = 14.50460281\n",
      "Validation score: 0.607738\n",
      "Iteration 333, loss = 14.48823310\n",
      "Validation score: 0.608012\n",
      "Iteration 334, loss = 14.47336909\n",
      "Validation score: 0.608280\n",
      "Iteration 335, loss = 14.45872655\n",
      "Validation score: 0.608550\n",
      "Iteration 336, loss = 14.44682817\n",
      "Validation score: 0.608831\n",
      "Iteration 337, loss = 14.43140651\n",
      "Validation score: 0.609098\n",
      "Iteration 338, loss = 14.41673302\n",
      "Validation score: 0.609361\n",
      "Iteration 339, loss = 14.40355540\n",
      "Validation score: 0.609626\n",
      "Iteration 340, loss = 14.38899160\n",
      "Validation score: 0.609880\n",
      "Iteration 341, loss = 14.37494632\n",
      "Validation score: 0.610138\n",
      "Iteration 342, loss = 14.36169993\n",
      "Validation score: 0.610394\n",
      "Iteration 343, loss = 14.34812936\n",
      "Validation score: 0.610651\n",
      "Iteration 344, loss = 14.33422604\n",
      "Validation score: 0.610908\n",
      "Iteration 345, loss = 14.32109350\n",
      "Validation score: 0.611157\n",
      "Iteration 346, loss = 14.30676483\n",
      "Validation score: 0.611415\n",
      "Iteration 347, loss = 14.29373294\n",
      "Validation score: 0.611676\n",
      "Iteration 348, loss = 14.28136317\n",
      "Validation score: 0.611939\n",
      "Iteration 349, loss = 14.26695637\n",
      "Validation score: 0.612192\n",
      "Iteration 350, loss = 14.25397327\n",
      "Validation score: 0.612443\n",
      "Iteration 351, loss = 14.24150305\n",
      "Validation score: 0.612692\n",
      "Iteration 352, loss = 14.22786798\n",
      "Validation score: 0.612937\n",
      "Iteration 353, loss = 14.21440982\n",
      "Validation score: 0.613180\n",
      "Iteration 354, loss = 14.20249172\n",
      "Validation score: 0.613427\n",
      "Iteration 355, loss = 14.18933075\n",
      "Validation score: 0.613670\n",
      "Iteration 356, loss = 14.17592170\n",
      "Validation score: 0.613907\n",
      "Iteration 357, loss = 14.16372474\n",
      "Validation score: 0.614144\n",
      "Iteration 358, loss = 14.15085361\n",
      "Validation score: 0.614372\n",
      "Iteration 359, loss = 14.13930177\n",
      "Validation score: 0.614606\n",
      "Iteration 360, loss = 14.12555689\n",
      "Validation score: 0.614831\n",
      "Iteration 361, loss = 14.11312974\n",
      "Validation score: 0.615060\n",
      "Iteration 362, loss = 14.10137586\n",
      "Validation score: 0.615290\n",
      "Iteration 363, loss = 14.08948432\n",
      "Validation score: 0.615516\n",
      "Iteration 364, loss = 14.07652592\n",
      "Validation score: 0.615731\n",
      "Iteration 365, loss = 14.06437997\n",
      "Validation score: 0.615949\n",
      "Iteration 366, loss = 14.05222057\n",
      "Validation score: 0.616168\n",
      "Iteration 367, loss = 14.04058270\n",
      "Validation score: 0.616379\n",
      "Iteration 368, loss = 14.02902637\n",
      "Validation score: 0.616598\n",
      "Iteration 369, loss = 14.01691775\n",
      "Validation score: 0.616810\n",
      "Iteration 370, loss = 14.00558405\n",
      "Validation score: 0.617018\n",
      "Iteration 371, loss = 13.99410193\n",
      "Validation score: 0.617227\n",
      "Iteration 372, loss = 13.98128982\n",
      "Validation score: 0.617428\n",
      "Iteration 373, loss = 13.96969796\n",
      "Validation score: 0.617632\n",
      "Iteration 374, loss = 13.95854961\n",
      "Validation score: 0.617835\n",
      "Iteration 375, loss = 13.94694859\n",
      "Validation score: 0.618039\n",
      "Iteration 376, loss = 13.93559193\n",
      "Validation score: 0.618242\n",
      "Iteration 377, loss = 13.92404152\n",
      "Validation score: 0.618436\n",
      "Iteration 378, loss = 13.91253945\n",
      "Validation score: 0.618642\n",
      "Iteration 379, loss = 13.90166688\n",
      "Validation score: 0.618850\n",
      "Iteration 380, loss = 13.89016370\n",
      "Validation score: 0.619056\n",
      "Iteration 381, loss = 13.87879702\n",
      "Validation score: 0.619256\n",
      "Iteration 382, loss = 13.86784903\n",
      "Validation score: 0.619468\n",
      "Iteration 383, loss = 13.85745500\n",
      "Validation score: 0.619677\n",
      "Iteration 384, loss = 13.84656978\n",
      "Validation score: 0.619879\n",
      "Iteration 385, loss = 13.83418665\n",
      "Validation score: 0.620066\n",
      "Iteration 386, loss = 13.82394033\n",
      "Validation score: 0.620259\n",
      "Iteration 387, loss = 13.81279952\n",
      "Validation score: 0.620452\n",
      "Iteration 388, loss = 13.80179505\n",
      "Validation score: 0.620639\n",
      "Iteration 389, loss = 13.79147738\n",
      "Validation score: 0.620826\n",
      "Iteration 390, loss = 13.78069925\n",
      "Validation score: 0.621019\n",
      "Iteration 391, loss = 13.77107924\n",
      "Validation score: 0.621216\n",
      "Iteration 392, loss = 13.76060621\n",
      "Validation score: 0.621408\n",
      "Iteration 393, loss = 13.74855047\n",
      "Validation score: 0.621586\n",
      "Iteration 394, loss = 13.73952648\n",
      "Validation score: 0.621773\n",
      "Iteration 395, loss = 13.72874388\n",
      "Validation score: 0.621948\n",
      "Iteration 396, loss = 13.71804867\n",
      "Validation score: 0.622126\n",
      "Iteration 397, loss = 13.70795249\n",
      "Validation score: 0.622302\n",
      "Iteration 398, loss = 13.69721212\n",
      "Validation score: 0.622471\n",
      "Iteration 399, loss = 13.68705141\n",
      "Validation score: 0.622649\n",
      "Iteration 400, loss = 13.67863645\n",
      "Validation score: 0.622830\n",
      "Iteration 401, loss = 13.66780536\n",
      "Validation score: 0.623004\n",
      "Iteration 402, loss = 13.65689156\n",
      "Validation score: 0.623171\n",
      "Iteration 403, loss = 13.64726608\n",
      "Validation score: 0.623339\n",
      "Iteration 404, loss = 13.63707914\n",
      "Validation score: 0.623510\n",
      "Iteration 405, loss = 13.62780391\n",
      "Validation score: 0.623682\n",
      "Iteration 406, loss = 13.61838262\n",
      "Validation score: 0.623850\n",
      "Iteration 407, loss = 13.60787372\n",
      "Validation score: 0.624018\n",
      "Iteration 408, loss = 13.59832779\n",
      "Validation score: 0.624188\n",
      "Iteration 409, loss = 13.58874038\n",
      "Validation score: 0.624354\n",
      "Iteration 410, loss = 13.57921562\n",
      "Validation score: 0.624528\n",
      "Iteration 411, loss = 13.57040266\n",
      "Validation score: 0.624702\n",
      "Iteration 412, loss = 13.56029092\n",
      "Validation score: 0.624867\n",
      "Iteration 413, loss = 13.55036932\n",
      "Validation score: 0.625031\n",
      "Iteration 414, loss = 13.54093833\n",
      "Validation score: 0.625192\n",
      "Iteration 415, loss = 13.53203392\n",
      "Validation score: 0.625355\n",
      "Iteration 416, loss = 13.52266486\n",
      "Validation score: 0.625522\n",
      "Iteration 417, loss = 13.51330905\n",
      "Validation score: 0.625676\n",
      "Iteration 418, loss = 13.50398095\n",
      "Validation score: 0.625838\n",
      "Iteration 419, loss = 13.49525629\n",
      "Validation score: 0.626007\n",
      "Iteration 420, loss = 13.48534366\n",
      "Validation score: 0.626166\n",
      "Iteration 421, loss = 13.47701515\n",
      "Validation score: 0.626328\n",
      "Iteration 422, loss = 13.46795495\n",
      "Validation score: 0.626487\n",
      "Iteration 423, loss = 13.45938135\n",
      "Validation score: 0.626646\n",
      "Iteration 424, loss = 13.45050723\n",
      "Validation score: 0.626800\n",
      "Iteration 425, loss = 13.44026920\n",
      "Validation score: 0.626943\n",
      "Iteration 426, loss = 13.43201832\n",
      "Validation score: 0.627086\n",
      "Iteration 427, loss = 13.42342256\n",
      "Validation score: 0.627233\n",
      "Iteration 428, loss = 13.41436718\n",
      "Validation score: 0.627375\n",
      "Iteration 429, loss = 13.40627508\n",
      "Validation score: 0.627520\n",
      "Iteration 430, loss = 13.39711594\n",
      "Validation score: 0.627657\n",
      "Iteration 431, loss = 13.38890371\n",
      "Validation score: 0.627788\n",
      "Iteration 432, loss = 13.38068434\n",
      "Validation score: 0.627937\n",
      "Iteration 433, loss = 13.37232726\n",
      "Validation score: 0.628077\n",
      "Iteration 434, loss = 13.36300657\n",
      "Validation score: 0.628211\n",
      "Iteration 435, loss = 13.35507829\n",
      "Validation score: 0.628350\n",
      "Iteration 436, loss = 13.34633747\n",
      "Validation score: 0.628488\n",
      "Iteration 437, loss = 13.33808482\n",
      "Validation score: 0.628620\n",
      "Iteration 438, loss = 13.32964068\n",
      "Validation score: 0.628755\n",
      "Iteration 439, loss = 13.32139324\n",
      "Validation score: 0.628894\n",
      "Iteration 440, loss = 13.31334711\n",
      "Validation score: 0.629033\n",
      "Iteration 441, loss = 13.30485633\n",
      "Validation score: 0.629165\n",
      "Iteration 442, loss = 13.29648518\n",
      "Validation score: 0.629294\n",
      "Iteration 443, loss = 13.28920354\n",
      "Validation score: 0.629431\n",
      "Iteration 444, loss = 13.28102086\n",
      "Validation score: 0.629562\n",
      "Iteration 445, loss = 13.27267235\n",
      "Validation score: 0.629699\n",
      "Iteration 446, loss = 13.26458642\n",
      "Validation score: 0.629832\n",
      "Iteration 447, loss = 13.25659476\n",
      "Validation score: 0.629965\n",
      "Iteration 448, loss = 13.24887988\n",
      "Validation score: 0.630105\n",
      "Iteration 449, loss = 13.24123029\n",
      "Validation score: 0.630239\n",
      "Iteration 450, loss = 13.23352017\n",
      "Validation score: 0.630375\n",
      "Iteration 451, loss = 13.22532399\n",
      "Validation score: 0.630502\n",
      "Iteration 452, loss = 13.21733871\n",
      "Validation score: 0.630625\n",
      "Iteration 453, loss = 13.21055124\n",
      "Validation score: 0.630757\n",
      "Iteration 454, loss = 13.20174820\n",
      "Validation score: 0.630879\n",
      "Iteration 455, loss = 13.19445486\n",
      "Validation score: 0.631006\n",
      "Iteration 456, loss = 13.18664813\n",
      "Validation score: 0.631132\n",
      "Iteration 457, loss = 13.17909939\n",
      "Validation score: 0.631255\n",
      "Iteration 458, loss = 13.17184259\n",
      "Validation score: 0.631374\n",
      "Iteration 459, loss = 13.16453905\n",
      "Validation score: 0.631495\n",
      "Iteration 460, loss = 13.15709807\n",
      "Validation score: 0.631615\n",
      "Iteration 461, loss = 13.14939079\n",
      "Validation score: 0.631721\n",
      "Iteration 462, loss = 13.14274119\n",
      "Validation score: 0.631846\n",
      "Iteration 463, loss = 13.13455035\n",
      "Validation score: 0.631957\n",
      "Iteration 464, loss = 13.12686079\n",
      "Validation score: 0.632077\n",
      "Iteration 465, loss = 13.11998719\n",
      "Validation score: 0.632201\n",
      "Iteration 466, loss = 13.11263170\n",
      "Validation score: 0.632320\n",
      "Iteration 467, loss = 13.10500395\n",
      "Validation score: 0.632431\n",
      "Iteration 468, loss = 13.09791420\n",
      "Validation score: 0.632549\n",
      "Iteration 469, loss = 13.09053819\n",
      "Validation score: 0.632665\n",
      "Iteration 470, loss = 13.08422254\n",
      "Validation score: 0.632782\n",
      "Iteration 471, loss = 13.07646761\n",
      "Validation score: 0.632894\n",
      "Iteration 472, loss = 13.06933721\n",
      "Validation score: 0.633001\n",
      "Iteration 473, loss = 13.06230500\n",
      "Validation score: 0.633112\n",
      "Iteration 474, loss = 13.05515685\n",
      "Validation score: 0.633224\n",
      "Iteration 475, loss = 13.04850308\n",
      "Validation score: 0.633332\n",
      "Iteration 476, loss = 13.04129417\n",
      "Validation score: 0.633450\n",
      "Iteration 477, loss = 13.03418670\n",
      "Validation score: 0.633565\n",
      "Iteration 478, loss = 13.02730589\n",
      "Validation score: 0.633681\n",
      "Iteration 479, loss = 13.02028474\n",
      "Validation score: 0.633805\n",
      "Iteration 480, loss = 13.01377269\n",
      "Validation score: 0.633929\n",
      "Iteration 481, loss = 13.00678603\n",
      "Validation score: 0.634046\n",
      "Iteration 482, loss = 13.00110510\n",
      "Validation score: 0.634169\n",
      "Iteration 483, loss = 12.99279437\n",
      "Validation score: 0.634273\n",
      "Iteration 484, loss = 12.98643834\n",
      "Validation score: 0.634388\n",
      "Iteration 485, loss = 12.98002495\n",
      "Validation score: 0.634497\n",
      "Iteration 486, loss = 12.97379231\n",
      "Validation score: 0.634605\n",
      "Iteration 487, loss = 12.96596945\n",
      "Validation score: 0.634703\n",
      "Iteration 488, loss = 12.95983189\n",
      "Validation score: 0.634804\n",
      "Iteration 489, loss = 12.95401138\n",
      "Validation score: 0.634908\n",
      "Iteration 490, loss = 12.94681666\n",
      "Validation score: 0.635005\n",
      "Iteration 491, loss = 12.94049239\n",
      "Validation score: 0.635102\n",
      "Iteration 492, loss = 12.93418641\n",
      "Validation score: 0.635198\n",
      "Validation score did not improve more than tol=0.000100 for two consecutive epochs. Stopping.\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "MLPRegressor(activation='logistic', alpha=0, batch_size='auto', beta_1=0.9,\n",
       "       beta_2=0.999, early_stopping=True, epsilon=1e-08,\n",
       "       hidden_layer_sizes=64, learning_rate='constant',\n",
       "       learning_rate_init=0.0001, max_iter=2000, momentum=0.9,\n",
       "       nesterovs_momentum=True, power_t=0.5, random_state=None,\n",
       "       shuffle=False, solver='sgd', tol=0.0001, validation_fraction=0.1,\n",
       "       verbose=True, warm_start=False)"
      ]
     },
     "execution_count": 79,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "mlp = MLPRegressor(hidden_layer_sizes=(64), \n",
    "                    activation='logistic', \n",
    "                    learning_rate_init=0.0001, \n",
    "                    solver='sgd', \n",
    "                    max_iter=2000, \n",
    "                    alpha=0, \n",
    "                    shuffle=False, \n",
    "                    verbose=True,\n",
    "                    validation_fraction=0.1, \n",
    "                    early_stopping=True)\n",
    "\n",
    "mlp.fit(train.iloc[:, :13], train.iloc[:, 13])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 80,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.axes._subplots.AxesSubplot at 0x113dcd748>"
      ]
     },
     "execution_count": 80,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x113c88860>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "epoch_loss = pd.read_csv('epoch_loss2.txt', header=None)\n",
    "epoch_loss.plot()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 81,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.axes._subplots.AxesSubplot at 0x113c35908>"
      ]
     },
     "execution_count": 81,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x113fb3b70>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "validation_error = pd.read_csv('validation_score2.txt', header=None)\n",
    "validation_error = validation_error.apply(lambda x: 1 - x)\n",
    "validation_error.plot()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 91,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.axes._subplots.AxesSubplot at 0x114a93c88>"
      ]
     },
     "execution_count": 91,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\nSUVORK5CYII=\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x114aa1438>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "predictions = mlp.predict(test.iloc[:,:13])\n",
    "pd.DataFrame(predictions, columns=['pred']).plot()\n",
    "test.iloc[:,13].reset_index(drop=True).plot()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.1"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
